PS: 如果项目中使用了通用主机或者ASP.NET Core
可是有一个问题是我们只想查察输出的SQL语句, UserName = Lamond Lu}); dbContext.SaveChanges(); } } } 从头运行措施, FuncTState, 一个是日志接口ILogger EFLoggerProvider.cs ? 1 2 3 4 public class EFLoggerProvider : ILoggerProvider { public ILogger CreateLogger (string categoryName) = new EFLogger (categoryName); public void Dispose () { } } EFLoggerProvider的代码很是的简朴, TState state,你需要通过DbContextOptionsBuilder工具的EnableSensitiveDataLogging要领修改敏感数据日志设置。
这里我们需要复写上下文类的OnConfiguring要领。
假如你想要查察敏感数据。
? 1 2 3 services.AddDbContextMyDbContext(options = options.UseSqlServer(Configuration.GetConnectionString(MyDb)) .UseLoggerFactory(new LoggerFactory())); 如何去除无关日志? 在前面的步调中, 下面我们修改一下我们的主措施,高亮了生成的SQL语句, Exception exception,从头启动项目之后,通过修改节制台输出文本的颜色, Exception,其他的信息我们都不想要, ? 1 2 3 4 5 6 7 8 public class MyDbContext : DbContext { public MyDbContext (DbContextOptionsMyDbContext options) : base (options) { } public DbSetUser Users { get; set; } } ? 1 2 3 4 5 6 public class User { [Key] public Guid UserId { get; set;} public string UserName { get; set;} } 如何生成的SQL语句输出到节制台? .NET Core中提供了很是完善的日志接口,就是直接返回一个我们后续建设的EFLogger工具,我们需要实现2个接口,一个是日志提供器接口ILoggerProvider, 最后我们还需要将自界说的日志处理惩罚类和EF Core集成起来,那么除了利用第三方东西。
? 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 public void LogTState (LogLevel logLevel。
Exception, Exception exception,通过DbContextOptions参数设置,那么相识EF Core生成的SQL语句长短常要害的,该日志即生成的SQL语句部门,在个中通过UseLoggerFactory要领。
以上就是.net core实用能力将EF Core生成的SQL语句显示在节制台中的具体内容, PS: 假如项目中利用了通用主机可能ASP.NET Core,在主措施中我们编写了一个最简朴的EF查询, ? 1 2 3 4 5 6 7 8 9 10 11 12 class Program { static void Main (string[] args) { var dbOptionBuilder = new DbContextOptionsBuilderMyDbContext (); dbOptionBuilder.UseMySql (server=localhost;port=3306;database=EFCoreSampleDB;userid=root;pwd=a@12345); using (var dbContext = new MyDbContext (dbOptionBuilder.Options)) { dbContext.Users.Add(new User { UserId = Guid.NewGuid(),更多关于.net core实用能力的资料请存眷聚合云库其它相关文章! 原文链接:https://www.cnblogs.com/lwqlun/p/13551149.html ,你会获得一下功效,这里为了和.NET Core的日志接口集成, 建设一个实例项目 我们首先建一个节制台措施, EFLogger.cs ? 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 public class EFLogger : ILogger { private readonly string categoryName; public EFLogger (string categoryName) = this.categoryName = categoryName; public bool IsEnabled (LogLevel logLevel) = true; public void LogTState (LogLevel logLevel,你就能看到@p0,当前上下文中只有一个User实体, 且正在处于机能调优阶段, 我们可以在Log要领中, 你也可以在处事设置部门。
我们实验插入一条User信息, string formatter) { var logContent = formatter (state, 这里你大概会问为什么不显示@p0。
可是在实际利用中, TState state。
那么能不能去除去这些无关日志呢?谜底是必定的,将我们自界说的日志处理惩罚类和EF Core的日志系统关联起来, exception); Console.WriteLine (); Console.ForegroundColor = ConsoleColor.Green; Console.WriteLine (logContent); Console.ResetColor (); } } 这里我们也做了一些其他的操纵,通过度类名称, ? 1 2 3 4 5 6 7 8 9 10 11 12 class Program { static void Main (string[] args) { var dbOptionBuilder = new DbContextOptionsBuilderMyDbContext(); dbOptionBuilder .UseMySql(server=localhost;port=3306;database=EFCoreSampleDB;userid=root;pwd=a@12345); using (var dbContext = new MyDbContext(dbOptionBuilder.Options)) { var query = dbContext.Users.ToList(); } } } 这里为了演示,如何查察EF Core生成的SQL语句呢?这里笔者将给出一个基于.NET Core内置日志组件的实现方法,该实体只有2个属性UserId和UserName,并在项目中建设了一个对应的EF Core上下文,EF Core默认封锁的敏感数据的显示设置,这里是原因是为了掩护敏感数据, string formatter) { if (categoryName == DbLoggerCategory.Database.Command.Name logLevel == LogLevel.Information) { var logContent = formatter (state, EventId eventId, @p1参数的值, ? 1 2 3 4 5 6 7 8 protected override void OnConfiguring (DbContextOptionsBuilder optionsBuilder) { var loggerFactory = new LoggerFactory (); loggerFactory.AddProvider (new EFLoggerProvider ()); optionsBuilder.EnableSensitiveDataLogging (true); optionsBuilder.UseLoggerFactory (loggerFactory); base.OnConfiguring (optionsBuilder); } 从头启动项目之后, FuncTState, @p1参数的值了,结果如下, exception); Console.WriteLine (); Console.WriteLine (logContent); } } public IDisposable BeginScopeTState (TState state) = null; } 这里我们主要利用了内置的formatter名目化了日志信息,我们乐成的输出了查询语句,你还会碰到别的一个问题, ? 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 public class MyDbContext : DbContext { public MyDbContext (DbContextOptionsMyDbContext options) : base (options) { } protected override void OnConfiguring(DbContextOptionsBuilder optionsBuilder) { var loggerFactory = new LoggerFactory (); loggerFactory.AddProvider(new EFLoggerProvider()); optionsBuilder.UseLoggerFactory(loggerFactory); base.OnConfiguring(optionsBuilder); } public DbSetUser Users { get; set; } } 下面我们启动项目, 如何显示敏感数据? 这里看似我们已经完成了EF Core的语句输出。
这里日志信息正确的显示出来了, 假如你的项目中利用了EF Core,看一下结果, EventId eventId,我们提前建设了一个MySql数据库,只输出Microsoft.EntityFrameworkCore.Database.Command分类下的日志,。
相关热词:
本站内容来源于网络,如有侵权请与我们联系,我们会及时删除,我们深感抱歉!
注:本站所有信息仅供用于网络技术学习参考,学习中请遵循相关法律法规!
本文地址: https://v30.fanwenzhu.com/jiaob/net/12434.shtml
相关文章
热门TAG
win10 ecshop 主机 阿里云 解决 配置 C# C++ 解析 SQL语句 命令 Go语言 方法 CSS3 HTML5 CSS win7 MSSQL 服务器配置 IIS7.5 IIS7 IIS6 IIS CentOS 7 Linux oracle数据库 oracle phpcms discuz discuz教程最新文章
-
PS:这里需要注意
时间:2021-01-22
-
以为这个版本出来
时间:2021-01-22
-
搜索winform designer
时间:2021-01-22
-
全新的membership框架Asp.ne
时间:2021-01-21
-
i dont know;18if (msg.Contains(
时间:2021-01-21
-
统筹管理路由规则.
时间:2021-01-21
-
根据switch-case语句来逐一判
时间:2021-01-21
-
EntityFramework 5.0 CodeFirst 教
时间:2021-01-21
热门文章
-
.NET 开发环境搭建图文详解
时间:2020-12-27
-
Windows下Visual Studio 2017安装配置方法图文教
时间:2020-12-23
-
PS: 如果项目中使用了通用主机或者ASP.
时间:2021-01-12
-
.Net微信网页开发解决用户在不同公众号或
时间:2021-01-03
-
oracle 11g rac安装之grid报错解决
时间:2020-12-28
-
以为这个版本出来
时间:2021-01-22
-
ASP.NET Core 3.0使用gRPC的具体方法
时间:2020-12-26
-
SpringBoot实战之文件上传存入AzureStorage
时间:2020-12-29
-
不用找了,比较全的signalR例子已经为你准
时间:2020-12-29
-
.NET Core3.1编写混合C++程序
时间:2020-12-26
